import { get, post, postWithQueryParams } from "@/api/request";

/**
 * 跟踪审计 控制器 / 跟踪审计 控制器添加跟踪审计
 * @param {object} data
 * @param {array<number>} [data.attachList] 附件ID列表
 * @param {string} [data.auditMatters] 审计事项
 * @param {string} [data.businessType] 业务类型
 * @param {string} [data.constructionUnit] 建设单位
 * @param {string} [data.followUpUnit] 跟审单位
 * @param {string} [data.plannedEndTime] 计划结束时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.plannedStartTime] 计划开始时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.preparationTime] 编制时间
 * @param {string} [data.preparedBy] 编制人
 * @param {number} [data.projectId] projectId
 * @param {string} [data.responsiblePerson] 负责人
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<TrackingAudit页面展示实体>}
 */
export function trackingAuditAdd(data, config) {
  return post("/trackingAudit/add", data, config);
}

/**
 * 跟踪审计 控制器 / 跟踪审计 控制器删除跟踪审计
 * @param {object} params
 * @param {object} data
 * @param {string} params.id 跟踪审计ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<TrackingAudit页面展示实体>}
 */
export function trackingAuditDelete(params, data, config) {
  return postWithQueryParams("/trackingAudit/delete", params, data, config);
}

/**
 * 跟踪审计 控制器 / 跟踪审计 控制器查询跟踪审计详情
 * @param {object} params
 * @param {string} params.id 跟踪审计ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<TrackingAudit页面展示实体>}
 */
export function trackingAuditDetail(params, config) {
  return get("/trackingAudit/detail", params, config);
}

/**
 * 跟踪审计 控制器 / 跟踪审计 控制器分页查询跟踪审计
 * @param {object} data
 * @param {string} [data.businessType] 业务类型
 * @param {number} [data.id] 主键
 * @param {number} [data.length] 分页大小
 * @param {number} [data.orderAsc] 排序方向
 * @param {string} [data.orderColum] 排序字段
 * @param {number} [data.pageIndex] 分页下标
 * @param {string} [data.responsiblePersonName] 负责人姓名
 * @param {number} [data.start] 查询记录起始下标
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<分页返回实体<TrackingAudit页面展示实体>>}
 */
export function trackingAuditList(data, config) {
  return post("/trackingAudit/list", data, config);
}

/**
 * 跟踪审计 控制器 / 跟踪审计 控制器更新跟踪审计
 * @param {object} data
 * @param {array<number>} [data.attachList] 附件ID列表
 * @param {string} [data.auditMatters] 审计事项
 * @param {string} [data.businessType] 业务类型
 * @param {string} [data.constructionUnit] 建设单位
 * @param {string} [data.followUpUnit] 跟审单位
 * @param {number} [data.id] 主键
 * @param {string} [data.plannedEndTime] 计划结束时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.plannedStartTime] 计划开始时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.preparationTime] 编制时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.preparedBy] 编制人
 * @param {number} [data.projectId] projectId
 * @param {string} [data.responsiblePerson] 负责人
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<TrackingAudit页面展示实体>}
 */
export function trackingAuditUpdate(data, config) {
  return post("/trackingAudit/update", data, config);
}

/**
 * @template T
 * @typedef {Object} 分页返回实体
 * @property {T[]} content - 内容
 * @property {number} elementsNo
 * @property {number} limit
 * @property {number} number
 * @property {number} totalElements
 * @property {number} totalPages
 * @description 分页返回实体
 */

/**
 * @typedef {object} TrackingAudit页面展示实体 跟踪审计页面展示实体
 * @property {string} auditMatters 审计事项
 * @property {string} businessType 业务类型
 * @property {string} constructionUnit 建设单位
 * @property {string} createTime 创建时间
 * @property {string} createUser 创建用户
 * @property {string} followUpUnit 跟审单位
 * @property {number} id 主键
 * @property {string} plannedEndTime 计划结束时间
 * @property {string} plannedStartTime 计划开始时间
 * @property {string} preparationTime 编制时间
 * @property {string} preparedBy 编制人
 * @property {string} preparedByName 编制人姓名
 * @property {number} projectId
 * @property {string} projectName 项目名称
 * @property {string} responsiblePerson 负责人
 * @property {number} responsiblePersonId 负责人id
 * @property {string} responsiblePersonName 负责人姓名
 * @property {string} updateTime 更新时间
 * @property {string} updateUser 更新用户
 * @description 跟踪审计页面展示实体
 */
